package org.darkforest.common.services;

import java.util.Map;

import org.darkforest.model.*;

/**
 * Created by abao on 2016/1/15.
 */
public interface MessageAndNoticeService {

    public void sendMessageAndNotice(MemberMsgTpl memberMsgTpl, Map<String, Object> smsMap, Map<String, Object> mailMap,
                                     Map<String, Object> innerMap, Map<String, Object> wechatMap);


    /***
     * @param params  替换参数
     * @param MessageType 消息类型 0为私信、1为系统消息、2为留言
     * @param context   消息内容
     * @param fromMember
     * @param toMember
     */
    public  void setInnerMessage(String[] params, Integer MessageType, String context, Member fromMember, Member toMember);

    /***
     * @param params  替换参数
     * @param context   消息内容
     * @param userId
     */
    public  void setWXMessage(String[] params, String context, Integer userId);

    /***
     * @param params  替换参数
     * @param context   消息内容
     * @param subject  邮件标题
     * @param email
     */
    public  void setMailMessage(String[] titles,String[] params, String subject, String context, String email);

    /***
     * @param params  替换参数
     * @param context 消息内容
     */
    public void setMoblieMessage(String[] params,String context, String moblie,Integer shortId) ;

    /*** 商户商品被投诉提醒
     * @param o
     * @param complianId
     */
    public void sendComplainToStore(OrderVo o,Integer complianId);

    /***商户商品库存预警
     * @param goods
     */
    public void sendGoodsStorageAlarmToStore(Goods goods);

    /***商户商品审核失败提醒
     *
     */
    public void  sendGoodsVerifyToStore(GoodsCommon goodsCommon);

    /****商户商品违规被下架
     * @param goodsCommon
     */
    public void sendGoodsViolationToStore(GoodsCommon goodsCommon);

    /***商户新订单提醒
     * @param order
     */
    public void sendNewOrderToStore(Order order);

    /***
     * 商户退款提醒
     */
    public void sendRefundMoneyToStore(RefundReturn refund);

    /***
     * 商户退货提醒
     */
    public void sendRefundGoodsToStore(RefundReturn refund);

    /***
     * 商户店铺到期提醒
     * @param storeId
     */
    public void sendExpireToStore(Integer storeId);

    /***
     * 到货提醒，针对用户
     */
    public void sendGoodsArrivalNoticeToUser(Goods goods);

    /**
     * 商品咨询回复提醒
     * @param consult
     */
    public void sendConsultGoodsReplyToUser(Consult consult);

    /***
     * 商品出库提醒
     * @param order
     */
    public void  orderDeliverSuccessToUser(Order order);

    /***
     *付款成功提醒
     * @param order
     */
    public void  orderPaymentSuccessToUser(Order order);

    /***
     *余额变动提醒
     * @param pdLog
     */
    public void  sendPredepositChangeToUser(PdLog pdLog);

    /****
     * 退款退货提醒
     * @param refund
     */
    public void sendRefundReturnNoticeToUser(RefundReturn refund);
    /***
     * 代金券使用提醒
     * @param voucher
     */
    public void sendVoucherUseToUser(Voucher voucher);
    /***
     * 代金券即将到期提醒
     * @param voucher
     */
    public void sendVoucherWillExpireToUser(Voucher voucher);


    /***
     * 身份验证通知
     * @param member
     */
    public void sendAuthenticate(Member member,String code);

    /***
     * 邮箱验证通知
     * @param member
     */
    public void sendBindEmail(Member member,String code);
    /***
     * 手机验证通知
     * @param member
     */
    public void sendModifyMobile(Member member,String code);
    /***
     * 重置密码通知
     * @param member
     */
    public void sendResetPwd(Member member,String code);
}
